143A - Help Vasilisa the Wise 2 - CodeForces Solution


brute force math *1000

Please click on ads to support us..

Python Code:

import sys

r1, r2 = map(int, input().strip().split())
if r1 == 1 or r2 == 1:
    print(-1)
    sys.exit(0)
c1, c2 = map(int, input().strip().split())
if c1 == 1 or c2 == 1:
    print(-1)
    sys.exit(0)
d1, d2 = map(int, input().strip().split())
if d1 == 1 or d2 == 1:
    print(-1)
    sys.exit(0)
if r1 == r2 == c1 == c2 == d1 == d2:
    print(-1)
    sys.exit(0)

x, a, b, c = 0, 0, 0, 0

for i in range(1, 10):
    x = i
    a = r1 - x
    b = c1 - x
    c = d1 - x
    if x == b or x == a or x == c or a == b or c == b or c == a:
        continue
    if 1 > a or a > 9:
        continue

    if 1 > c or c > 9:
        continue
    if 1 > b or b > 9:
        continue
    if c + b != r2 or a + b != d2 or a + c != c2:
        continue
    else:
        print(x, a)
        print(b, c)
        sys.exit(0)

print(-1)

C++ Code:

#include<iostream>
#include <string.h>
#include<math.h>
// #include <bits/stdc++.h>

using namespace std;

bool isPrime(int n){
	for (int i=2; i<n; i++){
		if (n%i==0) return 0;
	}
	return 1;
}


int maxRepetition(string s){
	unsigned int firstPtr = 0, secondPtr = 1, maxLength = -1, length = 1;
	while (secondPtr<=s.length()){
		if (s[firstPtr]!=s[secondPtr]){
			if (length>maxLength) {
				maxLength = length;
			}
			firstPtr = secondPtr;
			secondPtr++;
			length = 1;
		} 
		else{
			++length;
			++secondPtr;
		}
	} 
	// cout << maxLength << " ";
	return maxLength;
}


void odd_EvenArray(int arr[], int size){
	int even = 0, odd = 0, cnt = 0, oddArray[300], evenArray[300];
	for (int i=0; i<size; i++){
		if (arr[i]%2==0) {
			evenArray[even] = i+1;
			even++;
		}
	}
	for (int i=0; i<size; i++){
		if (arr[i]%2!=0) {
			oddArray[odd] = i+1;
			odd++;
		}
	}
	if (odd>=3){
		cout << "YES\n";
		cout << oddArray[0] << " " << oddArray[1] << " " << oddArray[2] << "\n";
	}
	else if ((odd>=1 && even>=2)){
		cout << "YES\n";
		cout << oddArray[0] << " " << evenArray[0] << " " << evenArray[1] << "\n";
	}
	else{
		cout << "NO\n";
	}
}


// int moves2_3(int n){
// 	if (n==1) return 2;
// 	if (n%3==0) return n/3;
// 	return (n/3+1);
// }

void roundCheck(int n){
	if (n<10 && n>0){
		cout << 1 << "\n" << n << "\n";	
	}
	else{
		int digit, power = 0, cnt = 0, m = n;
		while (m>0){
			if (m%10!=0) cnt++;
			m/=10;
		}
		cout << cnt << "\n";
		while (n>0){
			digit = n%10;
			
			if (digit==0){
				n/=10;
				power++;
			}
			else{
				cout << digit * pow(10,power) << " ";
				n/=10;
				power++;
			}
		}
		cout << "\n";
	}
}


int AverageArray(int arr[] ,int size, int ptr, int avg){
	// Array to be sorted
	if (ptr==size) return avg;
	avg = arr[ptr]/size;
	return AverageArray(arr, size, ++ptr, avg);
}

int aTob(long long int a, long long int b){
	long long int diff, cnt = 0;
	if (a==b) return 0;
	else{
		if (a>b){
			diff = a - b;
			while (diff!=0){
				if (diff>10){
					a-=10;
					cnt++;
					diff = a - b;
				}
				else{
					a-=diff;
					cnt++;
					diff = a - b;
				}
			}
		}
		else{
			diff = b - a;
			while (diff!=0){
				if (diff>10) {
					b-=10;
					cnt++;
					diff = b - a;
				}
				else{
					b = b - diff;
					cnt++;
					diff = b - a;
				}
			}
		}
	}
	return cnt;
}

void differentNum(int arr[], int n){
	int cnt;
	for (int i=0; i<n; i++){
		cnt = 0;
		for (int j=0; j<i; j++){
			if (arr[i]==arr[j]) cnt++;
		}
		for (int j=i+1; j<n; j++){
			if (arr[i]==arr[j]) cnt++;
		}
		if (cnt==0) {
			cout << i+1 << "\n";
			break;
		}
		// cout << cnt << " ";
	}
}

void repeatedString(string s){
	bool flag = 1;
	int arr[50], index;
	for (int i=0; i<s.length()-1; i++){
		if (!flag){
			cout << "NO\n";
			break;
		}
		if (s[i]!='-'){
			index = 1;
			arr[0] = i;
			for (int j=i+1; j<s.length(); j++){
				if (s[i]==s[j]){
				arr[index] = j;
				index++;
				s[j] = '-';
				}
			}
			for (int j=1; j<index; j++){
				if ((arr[j] - arr[j-1])!=1){
					flag = 0;
					break;
				}
			}
		}
	}
	if (flag) cout << "YES\n";
}

int sum2Nterms(int n){
	if (n==0) return 0;
	return sum2Nterms(n-1) + n;
}

int ans(int n){
	int sum = 0, plates = 0;
	for (int i=1; i<=n; i++){
		plates++;
		sum+=sum2Nterms(i);
		if (sum>n){
			sum-=sum2Nterms(i);
			plates--;
		}
	}
	// cout << plates << " ";
	return plates;
}

bool isPowerN(int n, int power){
	float a = log(n)/log(power);
	float b = a - int(a);
	if (b>0) return 0;
	return 1;
}

int main(){
	
	// int n,m; cin >> n >> m;
	// int arr[50];
	// for (int i=0; i<m; i++){
	// 	cin >> arr[i];
	// }
	// sort(arr,arr+m);
	// int min = 9999, diff;
	// int firstPtr = 0;
	// int secondPtr = n-1;
	// while (secondPtr<m){
	// 	diff = arr[secondPtr] - arr[firstPtr];
	// 	if (diff < min) min = diff;
	// 	firstPtr++; secondPtr++;
	// }
	// cout << min << "\n";
	
	// int a,b; cin >> a >> b;
	// if (a>=b) numberEmeralds(a,b);
	// else{
	// 	numberEmeralds(b,a);
	// }
	
	// int t, arr[10000], ele; cin >> t;
	// for (int i=0; i<t; i++){
	// 	cin >> ele;
	// 	arr[i] = moves2_3(ele);
	// }
	
	// for (int i=0; i<t; i++){
	// 	cout << arr[i] << "\n";
	// }
	
	// long long int n, arr[200000], ele; cin >> n;
	// long long sum = (n * (n + 1)) / 2;
	// for (int i=0; i<n-1; i++){
	// 	cin >> ele;
	// 	sum-=ele;
	// }
	// cout << sum << "\n";
	
	// string s; cin >> s;
	
	// long long int n, arr[200000], moves = 0, diff; cin >> n;
	// for (long long int i=0; i<n; i++){cin >> arr[i];}
	// long long int curPtr = 1;
	
	// while (curPtr<n){
	// 	diff = arr[curPtr] - arr[curPtr-1];
	// 	if (diff < 0) {
	// 		arr[curPtr]+=(-diff);
	// 		moves+=(-diff);
	// 	}
	// 	curPtr++;
	// }
	// cout << moves << "\n";
	
	// int n, m; cin >> n >> m;
	// int num2 = n/2;
	// int num1 = n - num2*2;
	// int min = num1 + num2, max = 0;
	// for (int i=0; i<num2; i++){
	// 	max+=2;
	// }
	// for (int j=0; j<num1; j++){
	// 	max++;
	// }
	// int flag = 0;
	// for (int i=min; i<=max; i++){
	// 	if (i%m==0){
	// 		cout << i << "\n";
	// 		flag = 1;
	// 		break;
	// 	}
	// }
	// if (!flag) cout << -1 << "\n";
	
	// int t, n, digit, power; cin >> t;
	// for (int i=0; i<t; i++){
	// 	cin >> n;
	// }
	
	// int t, flag, ele, arr[6], numDigits, sum1, sum2; cin >> t;
	// string ans[1000];
	// for (int i=0; i<t; i++){
	// 	cin >> ele;
	// 	numDigits = 0;
	// 	sum1 = 0, sum2 = 0;
	// 	while (ele>0){
	// 		arr[numDigits] = ele%10;
	// 		numDigits++;
	// 		ele/=10;
	// 	}
	// 	for (int j=0; j<numDigits/2; j++){
	// 		sum1+=arr[j];
	// 	}
	// 	for (int j=numDigits/2; j<numDigits; j++){
	// 		sum2+=arr[j];
	// 	}
	// 	if (sum2==sum1) ans[i] = "YES\n";
	// 	else{
	// 		ans[i] = "NO\n";
	// 	}
	// }
	// for (int i=0; i<t; i++){
	// 	cout << ans[i]; 
	// }
	
	
	// int n, x,numberElements, t; cin >> t;
	// for (int j=0; j<t; j++){
	// 	cin >> n >> x;
	// 	if (n==1 || n==2) cout << 1 << "\n";
	// 	else{
	// 		numberElements = n - 2;
	// 		if (numberElements%x==0) cout << (numberElements/x)+1 << "\n";
	// 		else{
	// 			cout << (numberElements/x)+2 << "\n";
	// 		}
	// 	}
	// }
	
	// int t; cin >> t;
	// long long int a,b;
	// float diff;
	// for (int i=0; i<t; i++){
	// 	cin >> a >> b;
	// 	// cout << aTob(a,b) << "\n";
	// 	if (a==b) cout << 0 << "\n";
	// 	else{
	// 		diff = a - b;
	// 		if (diff<0) diff = -diff;
	// 		diff = diff/10;
	// 		if (float(diff - int(diff)) > 0.0) cout << int(diff)+1 << "\n";
	// 		else{
	// 			cout << int(diff) << "\n";
	// 		}
	// 	}
	// }
	
	// int n, diff; cin >> n;
	// if (n==12) cout << 4 << " " << 8 << "\n";
	// if (n==13) cout << 4 << " " << 9 << "\n";
	// if (n==14) cout << 4 << " " << 10 << "\n";
	
	// if (n>=15){
	// 	if (n%2==0){
	// 		diff = n - 10;
	// 		cout << diff << " " << n - diff << "\n";
	// 	}
	// 	else{
	// 		diff = (n + 1) - 10;
	// 		cout << diff << " " << n - diff << "\n";
	// 	}
	// }
	
	// int n, k; cin >> n >> k;
	// int arr[2000], cnt = 0;
	// for (int i=0; i<n; i++){
	// 	cin >> arr[i];
	// }
	// if (n>=3){
	// 	sort(arr,arr+n);
	// 	int teamPtr = 0, max = -1, teams;
	// 	while (teamPtr<n){
	// 		if (arr[teamPtr]>max) max = arr[teamPtr];
	// 		if (arr[teamPtr+1]>max) max = arr[teamPtr+1];
	// 		if (arr[teamPtr+2]>max) max = arr[teamPtr+2];
	// 		teamPtr+=3;
	// 		if ((5 - max) >= k) cnt++;
	// 		if (n - teamPtr < 3) break;
	// 		max = -1;
	// 	}
	// 	cout << cnt << "\n";
	// }
	// else{
	// 	cout << 0 << "\n";
	// }
	
	// int n, c, arr[100], max = -1, diff; cin >> n >> c;
	// for (int i=0; i<n; i++){
	// 	cin >> arr[i];
	// }
	// for (int i=0; i<n-1; i++){
	// 	diff = arr[i] - arr[i+1] - c;
	// 	if (diff>max) max = diff;
	// }
	// if (max==-1) cout << 0 << "\n";
	// else{
	// 	cout << max << "\n";
	// }
	// int t, n, arr[100],flag, firstPtr, secondPtr; cin >> t;
	// for (int i=0; i<t; i++){
	// 	cin >> n;
	// 	firstPtr = 0;
	// 	secondPtr = 1;
	// 	for (int j=0; j<n; j++){
	// 		cin >> arr[j];
	// 	}
	// 	if (n==1) cout << "YES\n";
	// 	else{
	// 		flag = 1;
	// 		sort(arr, arr+n);
	// 		while (secondPtr<n){
	// 			if (arr[firstPtr]>=arr[secondPtr]){
	// 				flag = 0;
	// 				break;
	// 			}
	// 			firstPtr = secondPtr;
	// 			secondPtr++;
	// 		}
	// 		if (flag) cout << "YES\n";
	// 		else{
	// 			cout << "NO\n";
	// 		}
	// 	}
	// }
	
	// int x, y, diff, max; cin >> x >> y;
	// if (x==y){
	// 	if (x<=5){
	// 		if (x==1) cout << "1/1" << "\n";
	// 		else {
	// 			diff = 7 - x;
	// 			if (diff%2==0) cout << diff/2 << "/" << 3 << "\n";
	// 			else if (diff%3==0) {
	// 				cout << diff/3 << "/" << 2 << "\n";
	// 			} 
	// 			else{
	// 				cout << diff << "/" << 6 << "\n";
	// 			}
	// 		}
	// 	}
	// 	else{
	// 		cout << 1 << "/" << 6 << "\n";
	// 	}
	// }
	// else{
	// 	if (x>y) max = x;
	// 	else{
	// 		max = y;
	// 	}
	// 	diff = 7 - max;
	// 	if (diff==6) cout << 1 << "/" << 1 << "\n";
	// 	else{
	// 		// cout << diff << "\n";
	// 		if (diff%2==0) cout << diff/2 << "/" << 3 << "\n";
	// 		else if (diff%3==0) {
	// 			cout << diff/3 << "/" << 2 << "\n";
	// 		} 
	// 		else{
	// 			cout << diff << "/" << 6 << "\n";
	// 		}
	// 	}
	// }
	
	
	// int arr[1000];
	// int index = 0, num = 1;
	// while (index<1000){
	// 	if (num%3==0 || num%10==3){
	// 		num++;
	// 	}
	// 	else{
	// 		arr[index] = num;
	// 		num++; index++;
	// 	}
	// }
	// int t; cin >> t;
	// for (int i=0; i<t; i++){
	// 	cin >> num;
	// 	cout << arr[num-1] << "\n";
	// }	
	// int t, n,arr[100]; cin >> t;
	// for (int i=0; i<t; i++){
	// 	cin >> n; 
	// 	for (int j=0; j<n; j++){
	// 		cin >> arr[j];
	// 	}
	// 	differentNum(arr,n);
	// }
	
	// int n, v, arr[50], numSell, flag, ele, index = 0; cin >> n >> v;
	// for (int i=0; i<n; i++){
	// 	cin >> numSell;
	// 	flag = 0;
	// 	for (int j=0; j<numSell; j++){
	// 		cin >> ele;
	// 		if (ele<v) flag = 1;
	// 	}
	// 	if (flag){
	// 		arr[index] = i+1;
	// 		index++;
	// 	}
	// }
	// cout << index << "\n";
	// for (int i=0; i<index; i++){
	// 	cout << arr[i] << " ";
	// }
	
	// int t, n; cin >> t;
	// for (int i=0; i<t; i++){
	// 	cin >> n;
	// 	if (n%2==0) cout << n/2 << "\n";
	// 	else{
	// 		cout << (n/2) + 1 << "\n";
	// 	}
	// }
	
	// int n, m; cin >> n >> m;
	// char colors[100];
	// int wbg = 0, cmy = 0;
	
	// for (int i=0; i<n; i++){
	// 	for (int j=0; j<m; j++){
	// 		cin >> colors[i];
	// 		if (colors[i]=='C' || colors[i]=='M' || colors[i]=='Y') cmy++;
	// 		else{
	// 			wbg++;
	// 		}
	// 	}
	// }
	// if (wbg==(n*m)) cout << "#Black&White\n";
	// else{
	// 	cout << "#Color\n";
	// }
	
	// int t, n; cin >> t;
	// string s;
	// for (int i=0; i<t; i++){
	// 	cin >> n;
	// 	cin >> s;
	// 	repeatedString(s);
	// }
	
	// int t,n, flag, x,y; cin >> t;
	// string s;
	// for (int i=0; i<t; i++){
	// 	cin >> n;
	// 	cin >> s;
	// 	flag = 0;
	// 	x = 0, y = 0;
	// 	for (int j=0; j<n; j++){
	// 		if (x==1 && y==1){
	// 			flag = 1;
	// 			break;
	// 		}
	// 		if (s[j]=='L') x -= 1;
	// 		if (s[j]=='R') x += 1;
	// 		if (s[j]=='U') y += 1;
	// 		if (s[j]=='D') y -= 1;
	// 	}
	// 	if (x==1 && y==1) {
	// 		cout << "YES\n";
	// 		flag = 1;
	// 	}
	// 	else{
	// 		cout << "NO\n";
	// 	}
	// }
	
	// int t, n; cin >> t;
	// for (int i=0; i<t; i++){
	// 	cin >> n;
	// 	if ((n+5)%2==0) cout << 5 << "\n";
	// 	else{
	// 		cout << 7 << "\n";
	// 	}
	// }
	
	// int a[4]; cin >> a[0] >> a[1] >> a[2] >> a[3];
	// string s; cin >> s;
	
	// int sum = 0;
	// for (int i=0; i<s.length(); i++){
	// 	if (s[i]=='1') sum+=a[0];
	// 	if (s[i]=='2') sum+=a[1];
	// 	if (s[i]=='3') sum+=a[2];
	// 	if (s[i]=='4') sum+=a[3];
	// }
	// cout << sum << "\n";
	
	// int n; cin >> n; cout << 25;
	
	// int n; cin >> n; cout << ans(n) << "\n";
	
	// int n, sum = 0; cin >> n;
	// for (int j=1; j<=n; j++){
	// 	for (int i=1; i<n; i++){
	// 	if (j%i==0) sum++;
	// }
	// 	cout << sum << " ";
	// }
	// cout << "\n";
	
	// int n, d, arr[100], sumSongs = 0; cin >> n >> d;
	// for (int i=0; i<n; i++){
	// 	cin >> arr[i];
	// 	sumSongs+=arr[i];
	// }
	// int number10 = 10 * (n-1);
	// if (number10+sumSongs>d) cout << -1 << "\n";
	// else{
	// 	int numJokes = number10/5;
	// 	numJokes += (d - (number10 + sumSongs)) / 5;
	// 	cout << numJokes << "\n";
	// }
	
	// int a, b, t, diff; cin >> t;
	// for (int i=0; i<t; i++){
	// 	cin >> a >> b;
	// 	if (a==b) cout << 0 << "\n";
	// 	else{
	// 		if (a>b){
	// 			diff = a - b;
	// 			if (diff%2==0) cout << 1 << "\n";
	// 			else{
	// 				cout << 2 << "\n";
	// 			}
	// 		}
	// 		else{
	// 			diff = b - a;
	// 			if (diff%2==0) cout << 2<< "\n";
	// 			else{
	// 				cout << 1 << "\n";
	// 			}
	// 		}
	// 	}
	// }
	
	// int n, m, k; cin >> n >> m >> k;
	// if (n>m || n>k) cout << "No\n";
	// else{
	// 	cout << "Yes\n";
	// }
	
	// int n, m; cin >> n >> m;
	// if (m==0){
	// 	if (n==1) cout << 0 << "\n";
	// 	else{
	// 		cout << "No solution\n";
	// 	}
	// }
	// else{
	// 	cout << m << "";
	// 	n--;
	// 	for (int i=0; i<n; i++){
	// 		cout << 0 << "";
	// 	}
	// 	cout << "\n";
	// }
	// int t, n; cin >> t;
	
	// for (int j=1; j<=t; j++){
	// 	n = j;
	// 	if (n<10) cout << n << " ";
	// 	else{
	// 		int sum = 0, flag;
	// 		for (int i=1; i<=n; i++){
	// 			flag = 1;
	// 			int d = i, last = d%10;
	// 			d/=10;
	// 			while (d>0){
	// 				if (d%10!=last){
	// 					flag = 0;
	// 					break;
	// 				}
	// 				d/=10;
	// 			}
	// 			if (flag) sum++;
	// 		}
	// 		cout << sum << " ";
	// 	}
	// }
	// cout << "\n";
	
	// int n; cin >> n;
	// int arr[10][10];
	// for (int i=0; i<n; i++){
	// 	arr[0][i] = 1;
	// 	arr[i][0] = 1;
	// }
	// for (int i=1; i<n; i++){
	// 	for (int j=1; j<n; j++){
	// 		arr[i][j] = arr[i][j-1] + arr[i-1][j];			
	// 	}
	// }
	// cout << arr[n-1][n-1] << "\n";
	
	// int n, k; cin >> n >> k;
	// cout << k * ((n/k)+1) << "\n";
	
	// int t, n; cin >> t;
	// string s; 
	// for (int i=0; i<t; i++){
	// 	cin >> n >> s;
	// 	for (int j=0; j<n; j++){
	// 		if (s[j]=='U') cout << 'D';
	// 		else if (s[j]=='D') cout << 'U';
	// 		else{
	// 			cout << s[j] << "";
	// 		}
	// 	}
	// 	cout << "\n";
	// }
	
	int r1, r2, c1, c2, d1, d2; cin >> r1 >> r2 >> c1 >> c2 >> d1 >> d2;
	int x,y,z,w;
	y = (r1 - c1 + d2) / 2;
	z = d2 - y;
	x = r1 - y;
	w = c2 - y;
	
	if (x==y || z==w || x<=0 || y<=0 || z<=0 || w<=0 || x>9 || y>9 || z>9 || w>9 || x==z || y==w || x==w || y==z || (x+y)!=r1 || (z+w)!=r2 || (x+z)!=c1 || (w+y)!=c2 || (y+z)!=d2 || (x+w)!=d1) cout << -1 << "\n";
	else{
		cout << x << " " << y << "\n" << z << " " << w << "\n";
	}
	return 0;
}


Comments

Submit
0 Comments
More Questions

1032. Stream of Characters
987. Vertical Order Traversal of a Binary Tree
952. Largest Component Size by Common Factor
212. Word Search II
174. Dungeon Game
127. Word Ladder
123. Best Time to Buy and Sell Stock III
85. Maximal Rectangle
84. Largest Rectangle in Histogram
60. Permutation Sequence
42. Trapping Rain Water
32. Longest Valid Parentheses
Cutting a material
Bubble Sort
Number of triangles
AND path in a binary tree
Factorial equations
Removal of vertices
Happy segments
Cyclic shifts
Zoos
Build a graph
Almost correct bracket sequence
Count of integers
Differences of the permutations
Doctor's Secret
Back to School
I am Easy
Teddy and Tweety
Partitioning binary strings